/* eslint-disable camelcase */

import InputNumber from "./common/InputNumber.vue";
import InputRows from "./common/InputRows.vue";
import Elements_Create from "./common/Elements_Create.vue";
import InputNumberRows from "./common/InputNumberRows.vue";
import SelectRows from "./common/SelectRows.vue";
import ReliabilitySelect from "./common/ReliabilitySelect.vue";
import Model_TreeSelect from "./common/Model_TreeSelect.vue";
import Model_GetProperties from "./common/Model_GetProperties.vue";
import Models_TreeSelect from "./common/Models_TreeSelect.vue";
import Model_DropdownSearch from "./common/Model_DropdownSearch.vue";
import Models_DropdownSearch from "./common/Models_DropdownSearch.vue";
import LanguageSelectInput from "./common/LanguageSelectInput.vue";
import Select from "./common/Select.vue";
import Selects from "./common/Selects.vue";
import Textarea from "./common/Textarea.vue";
import Image from "./common/Image.vue";
import Images from "./common/Images.vue";
import File from "./common/File.vue";
import Files from "./common/Files.vue";
import DateEditor from "./common/DateEditor.vue";
import ValueSpecification from "./common/ValueSpecification.vue";
import Checkbox from "./common/Checkbox.vue";
import CheckboxRows from "./common/CheckboxRows.vue";
import Models_RightDropdown from "./common/Models_RightDropdown.vue";
import Model_RightDropdown from "./common/Model_RightDropdown.vue";
import Element_TreeSelect from "./common/Element_TreeSelect.vue";
import Element_AppliedStereotype from "./custom/Element_AppliedStereotype.vue";
import Element_ElementsAndStereotypes from "./custom/Element_ElementsAndStereotypes.vue";
import DiagramMatrix_rowElementType from "./custom/DiagramMatrix_rowElementType.vue";
import DiagramMapRelationCriterion from "./custom/DiagramMapRelationCriterion.vue";
import DiagramMapRowElementType from "./custom/DiagramMapRowElementType.vue";
import DiagramMapDisplayedAttributes from "./custom/DiagramMapDisplayedAttributes.vue";
import MultiplicityElement_multiplicity from "./custom/MultiplicityElement_multiplicity.vue";
import SlotCheckbox from "./slotEditor/SlotCheckbox.vue";
import SlotSelect from "./slotEditor/SlotSelect.vue";
import SlotInput from "./slotEditor/SlotInput.vue";
import SlotBanner from "./slotEditor/SlotBanner.vue";
import SlotInstance from "./slotEditor/SlotInstance.vue";
import Class_NestedClassifier from "./custom/Class_NestedClassifier.vue";
import NamedElement_name from "./custom/NamedElement_name.vue";
import ElementSyncMap from "./custom/ElementSyncMap.vue";
import SlotEditorForInstanceTable from "./custom/SlotEditorForInstanceTable.vue";
import Input_specification from "./common/Input_specification.vue";
import RequirementId from "./custom/RequirementId.vue";
import AddProperty from "./custom/AddProperty.vue";
import PropertyGroupColumns from "./custom/PropertyGroupColumns.vue";
import PropertyGroupProperties from "./custom/PropertyGroupProperties.vue";
import Adornment from "./custom/Adornment.vue";
import LegendItem from "./custom/LegendItems.vue";
import LegendItem_condition from "./custom/LegendItem_condition.vue";
import DiagramMatrix_relationCriterion from "./custom/DiagramMatrix_relationCriterion.vue";
import HyperlinkSelect from "./custom/HyperlinkSelect.vue";
import PropertyNodeLabel from "./custom/PropertyNodeLabel.vue";
import ModelsRightDropdownNodeLabel from "./custom/ModelsRightDropdownNodeLabel.vue";
import ModelsTreeSelectNodeLabel from "./custom/ModelsTreeSelectNodeLabel.vue";
import TimePoint from "./common/TimePoint.vue";
import DiagramCustomization from "./custom/DiagramCustomization.vue";
import PropertyBanner from "./custom/PropertyBanner.vue";
import ShapeMenuConfig from "./custom/ShapeMenuConfig.vue";
import ShapeCustomization from "./custom/shapeCustomization.vue";
import Expression from "./custom/Expression.vue";
import ActualResourcesDeployment from "./custom/ActualResourcesDeployment.vue";
import SpecifyActivityProperty from "./custom/SpecifyActivityProperty.vue";
import InitialValueTextArea from "./custom/InitialValueTextArea.vue";
import PrefixTextArea from "./custom/PrefixTextArea.vue";
import SequenceSelect from "./custom/SequenceSelect.vue";
import SequenceCommonComp from "./custom/SequenceCommonComp.vue";
import TrackEditor from "./custom/TrackEditor.vue";
import SelectStateActivity from "./custom/SelectStateActivity.vue";

import ApplyToElements from "./namingRule/ApplyToElements.vue";
import NameUni from "./namingRule/NameUni.vue";
import DefaultName from "./namingRule/DefaultName.vue";
import PropertyPrefixSetting from "./namingRule/PropertyPrefixSetting.vue";
import TriggerEventType from './custom/Trigger_EventType.vue';

import { markRaw } from "vue";

/**
 * key 是EditType
 * value 是这个EditType的对应的组件
 */
export const editorMap = {
  Elements_Create,
  Checkbox,
  CheckboxRows,
  InputNumber,
  Input: Textarea,
  DateEditor,
  InputRows,
  InputNumberRows,
  SelectRows,
  ReliabilitySelect,
  Model_TreeSelect,
  Model_GetProperties,
  Models_TreeSelect,
  Model_DropdownSearch,
  Models_RightDropdown,
  Models_DropdownSearch,
  Select,
  LanguageSelectInput,
  Textarea,
  Image,
  Images,
  File,
  Files,
  ValueSpecification,
  Model_RightDropdown,
  Element_TreeSelect,

  // --- custom
  RequirementId,
  AddProperty,
  Element_AppliedStereotype,
  Element_ElementsAndStereotypes,
  DiagramMatrix_rowElementType,
  DiagramMapRelationCriterion,
  DiagramMapRowElementType,
  HyperlinkSelect,
  DiagramMapDisplayedAttributes,
  MultiplicityElement_multiplicity,
  DiagramMatrix_relationCriterion,
  Class_NestedClassifier,
  NamedElement_name,
  ElementSyncMap,
  SlotEditorForInstanceTable,
  Input_specification,
  PropertyGroupColumns,
  PropertyGroupProperties,
  Adornment,
  LegendItem,
  LegendItem_condition,

  PropertyNodeLabel,
  ModelsRightDropdownNodeLabel,
  ModelsTreeSelectNodeLabel,
  TimePoint,
  DiagramCustomization, // 视图定制
  PropertyBanner, // banner
  ShapeMenuConfig, // 菜单配置
  ShapeCustomization,
  Selects,
  Expression, // 表达式
  SpecifyActivityProperty,
  InitialValueTextArea,
  PrefixTextArea,
  SequenceSelect,
  SequenceCommonComp,
  ActualResourcesDeployment,
  TrackEditor,
  SelectStateActivity,

  ApplyToElements,
  NameUni,
  DefaultName,
  PropertyPrefixSetting,
  TriggerEventType
};
Object.keys(editorMap).forEach(key => {
  editorMap[key] = markRaw(editorMap[key]);
});
export const slotEditorMap = {
  SlotCheckbox,
  SlotSelect,
  SlotInput,
  SlotInstance,
  SlotBanner
};
Object.keys(slotEditorMap).forEach(key => {
  slotEditorMap[key] = markRaw(slotEditorMap[key]);
});
